package JUC辅助类;

import java.util.concurrent.BrokenBarrierException;
import java.util.concurrent.CyclicBarrier;

/**
 * 加计时器  记录是否已经执行了 12个线程
 * 等待执行完成后 会执行自己创建线程的方法
 */
public class CyclicBarrirTest {
    public static void main(String[] args) {
        CyclicBarrier cyclicBarrier = new CyclicBarrier(12, () -> {
            System.out.println("成龙集齐了12个符咒！");
        });

        for (int i = 1; i <= 12; i++) {
            new Thread(() -> {
//                cyclicBarrier.getNumberWaiting();
                System.out.println(Thread.currentThread().getName()+"拿到了符咒");
                try {
//                    堵塞 等待记录了 n个线程后  执行完给出的方法后 才会执行被堵塞n个线程堵塞后的内容
                    cyclicBarrier.await();
                } catch (InterruptedException e) {
                    throw new RuntimeException(e);
                } catch (BrokenBarrierException e) {
                    throw new RuntimeException(e);
                }finally {

                }
//
                System.out.println("完成");
            },i+"").start();
        }
    }
}
